const fp = require("lodash/fp");

const cars = [{
	name: "Ferrari FF",
	horsepower: 660,
	dollar_value: 700000,
	in_stock: true
}, {
	name: "Spyker C12 Zagato",
	horsepower: 650,
	dollar_value: 648000,
	in_stock: false
}, {
	name: "Jaguar XKR-S",
	horsepower: 550,
	dollar_value: 132000,
	in_stock: false
}, {
	name: "Audi R8",
	horsepower: 525,
	dollar_value: 114200,
	in_stock: false
}, {
	name: "Aston Martin One-77",
	horsepower: 750,
	dollar_value: 1850000,
	in_stock: true
}, {
	name: "Pagani Huayra",
	horsepower: 700,
	dollar_value: 1300000,
	in_stock: false
}];


// 1. 
let isLastInStock = fp.flowRight(fp.prop("in_stock"), fp.last);

console.log(1, isLastInStock(cars));

// 2.
let firstCarName = fp.flowRight(fp.prop("name"), fp.first);

console.log(2, firstCarName(cars));

// 3.
let _average = function(xs){
	return fp.reduce(fp.add, 0, xs) / xs.length;
}


const _map = cars => fp.map(car => car.dollar_value, cars);

let averageDollarValue = fp.flowRight(_average, _map);

console.log(3, averageDollarValue(cars));

// 4.
let _underscore = fp.replace(/\W+/g, "_");

let sanitizeNameso = fp.flowRight(fp.map(str => _underscore(fp.lowerCase(str))));

console.log(4, sanitizeNameso(["Hello World", "Xiong Ye Chang"]))